import React, { Component } from 'react'
// 类组件的状态其实就是类组件实例的私有数据. 但是不能说实例的私有数据就是状态
export default class Count extends Component {
  constructor() {
    super()

    this.state = {
      c: 1,
      msg: '123',
    }
  }
  render() {
    //render的this一定是组件实例
    console.log('render函数执行了')
    return (
      <div>
        {/* 使用状态: 状态一定是要在render中渲染出来的 */}
        <p>{this.state.c}</p>
        <p>{this.state.msg}</p>
        <button
          onClick={() => {
            // 修改状态的值,必须调用this.setState
            // 因为调用this.setState才会导致组件更新,组件更新了,页面才会重新渲染
            // this.setState({
            //   // 属性: 目标值
            //   c: this.state.c + 1,
            //   msg: '嘿嘿嘿',
            // })
            // this.setState({
            //   // 属性: 目标值
            //   c: this.state.c + 2,
            // })
            this.setState({
              // 属性: 目标值
              c: this.state.c + 3,
            })
            // 注意: 如果多次连续调用setState则react会将多次setState合并为一次,然后出现相同属性才覆盖
            // this.setState({
            //   // c: this.state.c + 1,
            //   // c: this.state.c + 2,
            //   c: this.state.c + 3,
            //   msg: '嘿嘿嘿',
            // })
            // this.state.c = this.state.c + 1
            // 注意: this.setState修改数据是异步的
            // console.log(this.state.c)
          }}
        >
          +
        </button>
      </div>
    )
  }
}
